﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.UI.WebControls;

namespace BO
{
    public class EntidadeBO
    {
        #region Contrutores
        public EntidadeBO()
        {
            //
            // TODO: Add constructor logic here
            //
        }
        #endregion

        #region Leitores      
        public static Entidade Selecionar(int id)
        {
            try
            {
                var bco = new ModeloContainer();
                var obj = bco.Entidades.FirstOrDefault(f => f.id == id);
                if (obj == null) { throw new Exception("Entidade não encontrada!"); }
                return obj;
            }
            catch (Exception ex)
            {
                throw new Exception("Selecionar() - " + ex.Message.ToString());
            }
        }

        public static DropDownList Listar(DropDownList ddl)
        {
            try
            {
                var bco = new ModeloContainer();
                var objs = (from a in bco.Entidades
                            orderby a.Descricao ascending
                            select new
                            {
                                ID = a.id,
                                Descrição = a.Descricao
                            }).ToList();
                ddl.DataSource = objs;
                ddl.DataTextField = "Descrição";
                ddl.DataValueField = "ID";
                ddl.DataBind();
                ddl.Items.Insert(0, "- -");
                return ddl;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message.ToString());
            }
        }
        #endregion

        #region Modificadores
        public static Entidade Salvar(Entidade novoObjeto)
        {
            try
            {
                var bco = new ModeloContainer();
                // Faz o INSERT
                if (novoObjeto.id == 0)
                {
                    bco.Entidades.AddObject(novoObjeto);
                    bco.SaveChanges();
                }

                // Faz o UPDATE
                else
                {
                    var obj = bco.Entidades.FirstOrDefault(g => g.id == novoObjeto.id);

                    if (obj != null)
                    {
                        obj.Descricao = novoObjeto.Descricao;

                        bco.SaveChanges();

                        return obj;
                    }
                }

                return novoObjeto;    
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message.ToString());
            }
        }
        public static void Excluir(int id)
        {
            try
            {
                var bco = new ModeloContainer();
                var obj = bco.Entidades.FirstOrDefault(x => x.id == id);
                if (obj != null)
                {
                    bco.Entidades.DeleteObject(obj);
                    bco.SaveChanges();
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Excluir - " + ex.Message.ToString());
            }
        }
        #endregion
    }
}
